home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / src / demos / GL / ideas / draw_logo.c < prev    next >
C/C++ Source or Header  |  1994-08-01  |  14KB  |  503 lines

  1. /*
  2.  * Copyright 1992, 1993, 1994, Silicon Graphics, Inc.
  3.  * All Rights Reserved.
  4.  *
  5.  * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
  6.  * the contents of this file may not be disclosed to third parties, copied or
  7.  * duplicated in any form, in whole or in part, without the prior written
  8.  * permission of Silicon Graphics, Inc.
  9.  *
  10.  * RESTRICTED RIGHTS LEGEND:
  11.  * Use, duplication or disclosure by the Government is subject to restrictions
  12.  * as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
  13.  * and Computer Software clause at DFARS 252.227-7013, and/or in similar or
  14.  * successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
  15.  * rights reserved under the Copyright Laws of the United States.
  16.  */
  17. #include <gl.h>
  18.  
  19. #include "objects.h"
  20.  
  21. static float scp[18][3] = {
  22.     {1.000000, 0.000000, 0.000000},    {1.000000, 0.000000, 5.000000},
  23.     {0.707107, 0.707107, 0.000000},    {0.707107, 0.707107, 5.000000},
  24.     {0.000000, 1.000000, 0.000000},    {0.000000, 1.000000, 5.000000},
  25.     {-0.707107, 0.707107, 0.000000},    {-0.707107, 0.707107, 5.000000},
  26.     {-1.000000, 0.000000, 0.000000},    {-1.000000, 0.000000, 5.000000},
  27.     {-0.707107, -0.707107, 0.000000},    {-0.707107, -0.707107, 5.000000},
  28.     {0.000000, -1.000000, 0.000000},    {0.000000, -1.000000, 5.000000},
  29.     {0.707107, -0.707107, 0.000000},    {0.707107, -0.707107, 5.000000},
  30.     {1.000000, 0.000000, 0.000000},    {1.000000, 0.000000, 5.000000},
  31. };
  32.  
  33. static float dcp[18][3] = {
  34.     {1.000000, 0.000000, 0.000000},    {1.000000, 0.000000, 7.000000},
  35.     {0.707107, 0.707107, 0.000000},    {0.707107, 0.707107, 7.000000},
  36.     {0.000000, 1.000000, 0.000000},    {0.000000, 1.000000, 7.000000},
  37.     {-0.707107, 0.707107, 0.000000},    {-0.707107, 0.707107, 7.000000},
  38.     {-1.000000, 0.000000, 0.000000},    {-1.000000, 0.000000, 7.000000},
  39.     {-0.707107, -0.707107, 0.000000},    {-0.707107, -0.707107, 7.000000},
  40.     {0.000000, -1.000000, 0.000000},    {0.000000, -1.000000, 7.000000},
  41.     {0.707107, -0.707107, 0.000000},    {0.707107, -0.707107, 7.000000},
  42.     {1.000000, 0.000000, 0.000000},    {1.000000, 0.000000, 7.000000},
  43. };
  44.  
  45. static float ep[7][9][3] = {
  46.     {
  47.     {1.000000, 0.000000, 0.000000},
  48.     {0.707107, 0.707107, 0.000000},
  49.     {0.000000, 1.000000, 0.000000},
  50.     {-0.707107, 0.707107, 0.000000},
  51.     {-1.000000, 0.000000, 0.000000},
  52.     {-0.707107, -0.707107, 0.000000},
  53.     {0.000000, -1.000000, 0.000000},
  54.     {0.707107, -0.707107, 0.000000},
  55.     {1.000000, 0.000000, 0.000000},
  56.     },
  57.  
  58.     {
  59.     {1.000000, 0.034074, 0.258819},
  60.     {0.707107, 0.717087, 0.075806},
  61.     {0.000000, 1.000000, 0.000000},
  62.     {-0.707107, 0.717087, 0.075806},
  63.     {-1.000000, 0.034074, 0.258819},
  64.     {-0.707107, -0.648939, 0.441832},
  65.     {0.000000, -0.931852, 0.517638},
  66.     {0.707107, -0.648939, 0.441832},
  67.     {1.000000, 0.034074, 0.258819},
  68.     },
  69.  
  70.     {
  71.     {1.000000, 0.133975, 0.500000},
  72.     {0.707107, 0.746347, 0.146447},
  73.     {0.000000, 1.000000, 0.000000},
  74.     {-0.707107, 0.746347, 0.146447},
  75.     {-1.000000, 0.133975, 0.500000},
  76.     {-0.707107, -0.478398, 0.853553},
  77.     {0.000000, -0.732051, 1.000000},
  78.     {0.707107, -0.478398, 0.853553},
  79.     {1.000000, 0.133975, 0.500000},
  80.     },
  81.  
  82.     {
  83.     {1.000000, 0.292893, 0.707107},
  84.     {0.707107, 0.792893, 0.207107},
  85.     {0.000000, 1.000000, 0.000000},
  86.     {-0.707107, 0.792893, 0.207107},
  87.     {-1.000000, 0.292893, 0.707107},
  88.     {-0.707107, -0.207107, 1.207107},
  89.     {0.000000, -0.414214, 1.414214},
  90.     {0.707107, -0.207107, 1.207107},
  91.     {1.000000, 0.292893, 0.707107},
  92.     },
  93.  
  94.     {
  95.     {1.000000, 0.500000, 0.866025},
  96.     {0.707107, 0.853553, 0.253653},
  97.     {0.000000, 1.000000, 0.000000},
  98.     {-0.707107, 0.853553, 0.253653},
  99.     {-1.000000, 0.500000, 0.866025},
  100.     {-0.707107, 0.146447, 1.478398},
  101.     {0.000000, 0.000000, 1.732051},
  102.     {0.707107, 0.146447, 1.478398},
  103.     {1.000000, 0.500000, 0.866025},
  104.     },
  105.  
  106.     {
  107.     {1.000000, 0.741181, 0.965926},
  108.     {0.707107, 0.924194, 0.282913},
  109.     {0.000000, 1.000000, 0.000000},
  110.     {-0.707107, 0.924194, 0.282913},
  111.     {-1.000000, 0.741181, 0.965926},
  112.     {-0.707107, 0.558168, 1.648939},
  113.     {0.000000, 0.482362, 1.931852},
  114.     {0.707107, 0.558168, 1.648939},
  115.     {1.000000, 0.741181, 0.965926},
  116.     },
  117.  
  118.     {
  119.     {1.000000, 1.000000, 1.000000},
  120.     {0.707107, 1.000000, 0.292893},
  121.     {0.000000, 1.000000, 0.000000},
  122.     {-0.707107, 1.000000, 0.292893},
  123.     {-1.000000, 1.000000, 1.000000},
  124.     {-0.707107, 1.000000, 1.707107},
  125.     {0.000000, 1.000000, 2.000000},
  126.     {0.707107, 1.000000, 1.707107},
  127.     {1.000000, 1.000000, 1.000000},
  128.     },
  129.  
  130. };
  131.  
  132. static float en[7][9][3] = {
  133.     {
  134.     {1.000000, 0.000000, 0.000000},
  135.     {0.707107, 0.707107, 0.000000},
  136.     {0.000000, 1.000000, 0.000000},
  137.     {-0.707107, 0.707107, 0.000000},
  138.     {-1.000000, 0.000000, 0.000000},
  139.     {-0.707107, -0.707107, 0.000000},
  140.     {0.000000, -1.000000, 0.000000},
  141.     {0.707107, -0.707107, 0.000000},
  142.     {1.000000, 0.000000, 0.000000},
  143.     },
  144.  
  145.     {
  146.     {1.000000, 0.000000, 0.000000},
  147.     {0.707107, 0.683013, -0.183013},
  148.     {0.000000, 0.965926, -0.258819},
  149.     {-0.707107, 0.683013, -0.183013},
  150.     {-1.000000, 0.000000, 0.000000},
  151.     {-0.707107, -0.683013, 0.183013},
  152.     {0.000000, -0.965926, 0.258819},
  153.     {0.707107, -0.683013, 0.183013},
  154.     {1.000000, 0.000000, 0.000000},
  155.     },
  156.  
  157.     {
  158.     {1.000000, 0.000000, 0.000000},
  159.     {0.707107, 0.612372, -0.353553},
  160.     {0.000000, 0.866025, -0.500000},
  161.     {-0.707107, 0.612372, -0.353553},
  162.     {-1.000000, 0.000000, 0.000000},
  163.     {-0.707107, -0.612372, 0.353553},
  164.     {0.000000, -0.866025, 0.500000},
  165.     {0.707107, -0.612372, 0.353553},
  166.     {1.000000, 0.000000, 0.000000},
  167.     },
  168.  
  169.     {
  170.     {1.000000, 0.000000, 0.000000},
  171.     {0.707107, 0.500000, -0.500000},
  172.     {0.000000, 0.707107, -0.707107},
  173.     {-0.707107, 0.500000, -0.500000},
  174.     {-1.000000, 0.000000, 0.000000},
  175.     {-0.707107, -0.500000, 0.500000},
  176.     {0.000000, -0.707107, 0.707107},
  177.     {0.707107, -0.500000, 0.500000},
  178.     {1.000000, 0.000000, 0.000000},
  179.     },
  180.  
  181.     {
  182.     {1.000000, 0.000000, 0.000000},
  183.     {0.707107, 0.353553, -0.612372},
  184.     {0.000000, 0.500000, -0.866025},
  185.     {-0.707107, 0.353553, -0.612372},
  186.     {-1.000000, 0.000000, 0.000000},
  187.     {-0.707107, -0.353553, 0.612372},
  188.     {0.000000, -0.500000, 0.866025},
  189.     {0.707107, -0.353553, 0.612372},
  190.     {1.000000, 0.000000, 0.000000},
  191.     },
  192.  
  193.     {
  194.     {1.000000, 0.000000, 0.000000},
  195.     {0.707107, 0.183013, -0.683013},
  196.     {0.000000, 0.258819, -0.965926},
  197.     {-0.707107, 0.183013, -0.683013},
  198.     {-1.000000, 0.000000, 0.000000},
  199.     {-0.707107, -0.183013, 0.683013},
  200.     {0.000000, -0.258819, 0.965926},
  201.     {0.707107, -0.183013, 0.683013},
  202.     {1.000000, 0.000000, 0.000000},
  203.     },
  204.  
  205.     {
  206.     {1.000000, 0.000000, 0.000000},
  207.     {0.707107, 0.000000, -0.707107},
  208.     {0.000000, 0.000000, -1.000000},
  209.     {-0.707107, 0.000000, -0.707107},
  210.     {-1.000000, 0.000000, 0.000000},
  211.     {-0.707107, 0.000000, 0.707107},
  212.     {0.000000, 0.000000, 1.000000},
  213.     {0.707107, 0.000000, 0.707107},
  214.     {1.000000, 0.000000, 0.000000},
  215.     },
  216.  
  217. };
  218.  
  219. static draw_single_cylinder() {
  220.  
  221.     bgntmesh();
  222.         n3f(scp[0]); v3f(scp[0]);
  223.         n3f(scp[0]); v3f(scp[1]);
  224.         n3f(scp[2]); v3f(scp[2]);
  225.         n3f(scp[2]); v3f(scp[3]);
  226.         n3f(scp[4]); v3f(scp[4]);
  227.         n3f(scp[4]); v3f(scp[5]);
  228.         n3f(scp[6]); v3f(scp[6]);
  229.         n3f(scp[6]); v3f(scp[7]);
  230.         n3f(scp[8]); v3f(scp[8]);
  231.         n3f(scp[8]); v3f(scp[9]);
  232.         n3f(scp[10]); v3f(scp[10]);
  233.         n3f(scp[10]); v3f(scp[11]);
  234.         n3f(scp[12]); v3f(scp[12]);
  235.         n3f(scp[12]); v3f(scp[13]);
  236.         n3f(scp[14]); v3f(scp[14]);
  237.         n3f(scp[14]); v3f(scp[15]);
  238.         n3f(scp[16]); v3f(scp[16]);
  239.         n3f(scp[16]); v3f(scp[17]);
  240.     endtmesh();
  241. }
  242.  
  243. static draw_double_cylinder() {
  244.  
  245.     bgntmesh();
  246.         n3f(dcp[0]); v3f(dcp[0]);
  247. n3f(dcp[0]);
  248. v3f(dcp[1]);
  249.         n3f(dcp[2]); v3f(dcp[2]);
  250. n3f(dcp[2]);
  251. v3f(dcp[3]);
  252.         n3f(dcp[4]); v3f(dcp[4]);
  253. n3f(dcp[4]);
  254. v3f(dcp[5]);
  255.         n3f(dcp[6]); v3f(dcp[6]);
  256. n3f(dcp[6]);
  257. v3f(dcp[7]);
  258.         n3f(dcp[8]); v3f(dcp[8]);
  259. n3f(dcp[8]);
  260. v3f(dcp[9]);
  261.         n3f(dcp[10]); v3f(dcp[10]);
  262. n3f(dcp[10]);
  263. v3f(dcp[11]);
  264.         n3f(dcp[12]); v3f(dcp[12]);
  265. n3f(dcp[12]);
  266. v3f(dcp[13]);
  267.         n3f(dcp[14]); v3f(dcp[14]);
  268. n3f(dcp[14]);
  269. v3f(dcp[15]);
  270.         n3f(dcp[16]); v3f(dcp[16]);
  271. n3f(dcp[16]);
  272. v3f(dcp[17]);
  273.     endtmesh();
  274. }
  275.  
  276. static draw_elbow() {
  277.  
  278.     bgntmesh();
  279.         n3f(en[0][0]); v3f(ep[0][0]);
  280.         n3f(en[1][0]); v3f(ep[1][0]);
  281.         n3f(en[0][1]); v3f(ep[0][1]);
  282.         n3f(en[1][1]); v3f(ep[1][1]);
  283.         n3f(en[0][2]); v3f(ep[0][2]);
  284.         n3f(en[1][2]); v3f(ep[1][2]);
  285.         n3f(en[0][3]); v3f(ep[0][3]);
  286.         n3f(en[1][3]); v3f(ep[1][3]);
  287.         n3f(en[0][4]); v3f(ep[0][4]);
  288.         n3f(en[1][4]); v3f(ep[1][4]);
  289.         n3f(en[0][5]); v3f(ep[0][5]);
  290.         n3f(en[1][5]); v3f(ep[1][5]);
  291.         n3f(en[0][6]); v3f(ep[0][6]);
  292.         n3f(en[1][6]); v3f(ep[1][6]);
  293.         n3f(en[0][7]); v3f(ep[0][7]);
  294.         n3f(en[1][7]); v3f(ep[1][7]);
  295.         n3f(en[0][8]); v3f(ep[0][8]);
  296.         n3f(en[1][8]); v3f(ep[1][8]);
  297.     endtmesh();
  298.     bgntmesh();
  299.         n3f(en[1][0]); v3f(ep[1][0]);
  300.         n3f(en[2][0]); v3f(ep[2][0]);
  301.         n3f(en[1][1]); v3f(ep[1][1]);
  302.         n3f(en[2][1]); v3f(ep[2][1]);
  303.         n3f(en[1][2]); v3f(ep[1][2]);
  304.         n3f(en[2][2]); v3f(ep[2][2]);
  305.         n3f(en[1][3]); v3f(ep[1][3]);
  306.         n3f(en[2][3]); v3f(ep[2][3]);
  307.         n3f(en[1][4]); v3f(ep[1][4]);
  308.         n3f(en[2][4]); v3f(ep[2][4]);
  309.         n3f(en[1][5]); v3f(ep[1][5]);
  310.         n3f(en[2][5]); v3f(ep[2][5]);
  311.         n3f(en[1][6]); v3f(ep[1][6]);
  312.         n3f(en[2][6]); v3f(ep[2][6]);
  313.         n3f(en[1][7]); v3f(ep[1][7]);
  314.         n3f(en[2][7]); v3f(ep[2][7]);
  315.         n3f(en[1][8]); v3f(ep[1][8]);
  316.         n3f(en[2][8]); v3f(ep[2][8]);
  317.     endtmesh();
  318.     bgntmesh();
  319.         n3f(en[2][0]); v3f(ep[2][0]);
  320.         n3f(en[3][0]); v3f(ep[3][0]);
  321.         n3f(en[2][1]); v3f(ep[2][1]);
  322.         n3f(en[3][1]); v3f(ep[3][1]);
  323.         n3f(en[2][2]); v3f(ep[2][2]);
  324.         n3f(en[3][2]); v3f(ep[3][2]);
  325.         n3f(en[2][3]); v3f(ep[2][3]);
  326.         n3f(en[3][3]); v3f(ep[3][3]);
  327.         n3f(en[2][4]); v3f(ep[2][4]);
  328.         n3f(en[3][4]); v3f(ep[3][4]);
  329.         n3f(en[2][5]); v3f(ep[2][5]);
  330.         n3f(en[3][5]); v3f(ep[3][5]);
  331.         n3f(en[2][6]); v3f(ep[2][6]);
  332.         n3f(en[3][6]); v3f(ep[3][6]);
  333.         n3f(en[2][7]); v3f(ep[2][7]);
  334.         n3f(en[3][7]); v3f(ep[3][7]);
  335.         n3f(en[2][8]); v3f(ep[2][8]);
  336.         n3f(en[3][8]); v3f(ep[3][8]);
  337.     endtmesh();
  338.     bgntmesh();
  339.         n3f(en[3][0]); v3f(ep[3][0]);
  340.         n3f(en[4][0]); v3f(ep[4][0]);
  341.         n3f(en[3][1]); v3f(ep[3][1]);
  342.         n3f(en[4][1]); v3f(ep[4][1]);
  343.         n3f(en[3][2]); v3f(ep[3][2]);
  344.         n3f(en[4][2]); v3f(ep[4][2]);
  345.         n3f(en[3][3]); v3f(ep[3][3]);
  346.         n3f(en[4][3]); v3f(ep[4][3]);
  347.         n3f(en[3][4]); v3f(ep[3][4]);
  348.         n3f(en[4][4]); v3f(ep[4][4]);
  349.         n3f(en[3][5]); v3f(ep[3][5]);
  350.         n3f(en[4][5]); v3f(ep[4][5]);
  351.         n3f(en[3][6]); v3f(ep[3][6]);
  352.         n3f(en[4][6]); v3f(ep[4][6]);
  353.         n3f(en[3][7]); v3f(ep[3][7]);
  354.         n3f(en[4][7]); v3f(ep[4][7]);
  355.         n3f(en[3][8]); v3f(ep[3][8]);
  356.         n3f(en[4][8]); v3f(ep[4][8]);
  357.     endtmesh();
  358.     bgntmesh();
  359.         n3f(en[4][0]); v3f(ep[4][0]);
  360.         n3f(en[5][0]); v3f(ep[5][0]);
  361.         n3f(en[4][1]); v3f(ep[4][1]);
  362.         n3f(en[5][1]); v3f(ep[5][1]);
  363.         n3f(en[4][2]); v3f(ep[4][2]);
  364.         n3f(en[5][2]); v3f(ep[5][2]);
  365.         n3f(en[4][3]); v3f(ep[4][3]);
  366.         n3f(en[5][3]); v3f(ep[5][3]);
  367.         n3f(en[4][4]); v3f(ep[4][4]);
  368.         n3f(en[5][4]); v3f(ep[5][4]);
  369.         n3f(en[4][5]); v3f(ep[4][5]);
  370.         n3f(en[5][5]); v3f(ep[5][5]);
  371.         n3f(en[4][6]); v3f(ep[4][6]);
  372.         n3f(en[5][6]); v3f(ep[5][6]);
  373.         n3f(en[4][7]); v3f(ep[4][7]);
  374.         n3f(en[5][7]); v3f(ep[5][7]);
  375.         n3f(en[4][8]); v3f(ep[4][8]);
  376.         n3f(en[5][8]); v3f(ep[5][8]);
  377.     endtmesh();
  378.     bgntmesh();
  379.         n3f(en[5][0]); v3f(ep[5][0]);
  380.         n3f(en[6][0]); v3f(ep[6][0]);
  381.         n3f(en[5][1]); v3f(ep[5][1]);
  382.         n3f(en[6][1]); v3f(ep[6][1]);
  383.         n3f(en[5][2]); v3f(ep[5][2]);
  384.         n3f(en[6][2]); v3f(ep[6][2]);
  385.         n3f(en[5][3]); v3f(ep[5][3]);
  386.         n3f(en[6][3]); v3f(ep[6][3]);
  387.         n3f(en[5][4]); v3f(ep[5][4]);
  388.         n3f(en[6][4]); v3f(ep[6][4]);
  389.         n3f(en[5][5]); v3f(ep[5][5]);
  390.         n3f(en[6][5]); v3f(ep[6][5]);
  391.         n3f(en[5][6]); v3f(ep[5][6]);
  392.         n3f(en[6][6]); v3f(ep[6][6]);
  393.         n3f(en[5][7]); v3f(ep[5][7]);
  394.         n3f(en[6][7]); v3f(ep[6][7]);
  395.         n3f(en[5][8]); v3f(ep[5][8]);
  396.         n3f(en[6][8]); v3f(ep[6][8]);
  397.     endtmesh();
  398. }
  399.  
  400. static bend_forward() {
  401.  
  402.     translate(0.0, 1.000000, 0.0);
  403.     rotate(900, 'x');
  404.     translate(0.0, -1.000000, 0.0);
  405. }
  406.  
  407. static bend_left() {
  408.  
  409.     rotate(-900, 'z');
  410.     translate(0.0, 1.000000, 0.0);
  411.     rotate(900, 'x');
  412.     translate(0.0, -1.000000, 0.0);
  413. }
  414.  
  415. static bend_right() {
  416.  
  417.     rotate(900, 'z');
  418.     translate(0.0, 1.000000, 0.0);
  419.     rotate(900, 'x');
  420.     translate(0.0, -1.000000, 0.0);
  421. }
  422.  
  423. draw_logo() {
  424.  
  425.     lmbind(MATERIAL, MAT_LOGO);
  426.  
  427.     translate(5.500000, -3.500000, 4.500000);
  428.  
  429.     translate(0.0, 0.0, -7.000000);
  430.     draw_double_cylinder();
  431.     bend_forward();
  432.     draw_elbow();
  433.     translate(0.0, 0.0, -7.000000);
  434.     draw_double_cylinder();
  435.     bend_forward();
  436.     draw_elbow();
  437.     translate(0.0, 0.0, -5.000000);
  438.     draw_single_cylinder();
  439.     bend_right();
  440.     draw_elbow();
  441.     translate(0.0, 0.0, -7.000000);
  442.     draw_double_cylinder();
  443.     bend_forward();
  444.     draw_elbow();
  445.     translate(0.0, 0.0, -7.000000);
  446.     draw_double_cylinder();
  447.     bend_forward();
  448.     draw_elbow();
  449.     translate(0.0, 0.0, -5.000000);
  450.     draw_single_cylinder();
  451.     bend_left();
  452.     draw_elbow();
  453.     translate(0.0, 0.0, -7.000000);
  454.     draw_double_cylinder();
  455.     bend_forward();
  456.     draw_elbow();
  457.     translate(0.0, 0.0, -7.000000);
  458.     draw_double_cylinder();
  459.     bend_forward();
  460.     draw_elbow();
  461.     translate(0.0, 0.0, -5.000000);
  462.     draw_single_cylinder();
  463.     bend_right();
  464.     draw_elbow();
  465.     translate(0.0, 0.0, -7.000000);
  466.     draw_double_cylinder();
  467.     bend_forward();
  468.     draw_elbow();
  469.     translate(0.0, 0.0, -7.000000);
  470.     draw_double_cylinder();
  471.     bend_forward();
  472.     draw_elbow();
  473.     translate(0.0, 0.0, -5.000000);
  474.     draw_single_cylinder();
  475.     bend_left();
  476.     draw_elbow();
  477.     translate(0.0, 0.0, -7.000000);
  478.     draw_double_cylinder();
  479.     bend_forward();
  480.     draw_elbow();
  481.     translate(0.0, 0.0, -7.000000);
  482.     draw_double_cylinder();
  483.     bend_forward();
  484.     draw_elbow();
  485.     translate(0.0, 0.0, -5.000000);
  486.     draw_single_cylinder();
  487.     bend_right();
  488.     draw_elbow();
  489.     translate(0.0, 0.0, -7.000000);
  490.     draw_double_cylinder();
  491.     bend_forward();
  492.     draw_elbow();
  493.     translate(0.0, 0.0, -7.000000);
  494.     draw_double_cylinder();
  495.     bend_forward();
  496.     draw_elbow();
  497.     translate(0.0, 0.0, -5.000000);
  498.     draw_single_cylinder();
  499.     bend_left();
  500.     draw_elbow();
  501. }
  502.  
  503.